Field of the Invention
The present invention generally relates to graphics processing and more specifically to distributing and accessing vertex data.
Description of the Related Art
In a conventional graphics processing unit (GPU), some software methods (commands) necessitate an exchange of information between the GPU and a central processing unit (CPU). The GPU processing is idled and a graphics engine within the GPU is drained before the exchange begins. The software methods examine state of the GPU (stored in registers) and then update the configuration of the GPU based on the examined state. The following sequence of events occurs to execute the software method:                1) A software driver puts a software method into pushbuffer that stores a sequence of instructions that configure the GPU;        2) Eventually, a front end unit within the GPU receives the SW method;        3) The front end unit stops sending commands to the graphics engine;        4) The front end unit waits for the graphics engine to become idle;        5) After the graphics engine is idle, the front end unit generates a CPU interrupt;        6) The CPU fields the interrupt;        7) The CPU reads and writes registers in the GPU;        8) The CPU signals the GPU to restart; and        9) The front end unit starts sending commands to the graphics engine.        
One problem with this technique is that issuing interrupts to the CPU can significantly reduce the throughput of the CPU. The throughput of the GPU is also reduced since the graphics engine is idled during execution of the software method. Accordingly, what is needed in the art is a more efficient technique for performing software methods with the GPU.